@Lemon
2年前 提问
1个回答

如何理解http协议是无状态的

齐士忠
2年前

HTTP协议是无状态的,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,打开一个服务器上的网页和上一次打开这个服务器上的网页之间没有任何联系。HTTP是一个无状态的面向连接的协议,无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议,每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不受前面的请求应答情况直接影响。

以下是一些常见的对状态的误解:

  • 有人在解释HTTP的无状态时,把它跟有连接对立,说是两种方式,也就是如果想不无状态,就必须有连接,但其实不然;

  • 有连接和无连接以及之后的Keep-Alive都是指TCP连接;

  • 有状态和无状态可以指TCP也可以指HTTP;

  • TCP一直有状态,HTTP一直无状态,但是应用为了有状态,就给HTTP加了cookie和session机制,让使用http的应用也能有状态,但http还是无状态;

  • 开始TCP是有连接,后来TCP无连接,再后来也就是现在TCP是Keep-Alive,有点像有连接;